// export default {
// 	config: {
// 		baseURL: "http://192.168.105.201:30651/api/v1/",
// 		getToken() {
// 			let token = uni.getStorageSync('token')
// 			if (!token)  {
// 				return uni.reLaunch({
// 					url: "/pages/login/login"
// 				})
// 			}
// 			return token
// 		},
// 		// 请求拦截器
// 		beforeRequest(options = {}) {
// 			return new  Promise((resolve, reject) => {
// 				options.url = this.baseURL + options.url
// 				options.method = options.method || 'GET'
// 				options.header = {
//                     "Authorization": this.getToken()
//                 }
// 				options.isLoading = options.isLoading || false
// 				if (options.isLoading) {
// 					uni.showLoading({
// 						title: '加载中'
// 					})
// 				}
// 				resolve(options)
// 			})
// 		},
// 		// 响应拦截器
// 		handleResponse(data) {
// 			return new Promise((resolve, reject) => {
// 				const [err, res] = data;
// 				uni.hideLoading()
// 				if (res && res.code !== 20000) {
// 					let msg = res.message || '请求错误';
// 					uni.showToast({
// 						icon: 'none',
// 						title: msg
// 					})
// 					return reject(msg)
// 				}
// 				if (err) {
// 					uni.showToast({
// 						icon: 'none',
// 						title: '请求错误'
// 					})
// 					return reject(err)
// 				}
// 				return resolve(res.data)
// 			})
// 		},
// 		request(options = {}) {
// 			return this.config.beforeRequest(options).then(opt => {
// 				return uni.request(opt)
// 			}).then(res => this.config.handleResponse(res))
// 		}
// 	}
// }

const baseURL = "http://192.168.105.201:30651/api/v1/"
export default (params) => {
	let url = params.url
	let method = params.method || "get"
	let data = params.data || {}
	// 设置请求头
	let header = {}
	if (method.toLowerCase() == "post") {
		header = {
			'Content-Type': 'application/json'
		}
	}
	// 获取本地token
	let token = uni.getStorageSync("token")
	if (token) {
		header['Authorization'] = token
	}
	let isLoading = params.isLoading || false
	if (isLoading) {
		uni.showLoading({
			title: "加载中...",
			mask:true
		})
	}
	return new Promise((resolve, reject) => {
		uni.request({
			url: baseURL + url,
			method,
			header,
			data,
			timeout: 7000,
			success: (res) => {
				if (res.data.code == 20000) {
					resolve(res.data)
				} else {
					switch(res.data.code) {
						case 40000:
							uni.showToast({
								icon:"none",
								title:res.data.message,
								mask: true
							})
							break
						case 401: 
							uni.showModal({
								title: "提示",
								content: "请登录",
								showCancel: false,
								success(res) {
									setTimeout(() => {
										uni.reLaunch({
											url: "/pages/login/login"
										})
									}, 1000);
								},
							})
							break
						case 404:
							uni.showToast({
								title: '请求地址不存在',
								mask: true
							})
							break;
						case 500:
							uni.showToast({
								title: res.data.message,
								icon:"error",
								mask: true
							})
							break;
						default:
							uni.showToast({
								title: '请求失败，请重试',
								icon:"error",
								mask: true
							})
							break;
					}
				}
			},
			fail: (err) => {
				if (err.errMsg.indexOf('request:fail') !== -1) {
					uni.showToast({
						title: '网络异常',
						icon: "error",
						mask: true
					})
				} else {
					uni.showToast({
						title: '未知错误',
						icon:"none",
						mask: true
					})
				}
				reject(err)
			},
			complete: () => {
				// 不管成功还是失败都会执行
				if (isLoading) {
					uni.hideLoading();
				}
				// uni.hideToast();
			}
		})
	})
}